package paint;

import java.awt.Color;
import java.awt.Graphics;

import java.util.List;

import javax.swing.JApplet;

import figuren.Ellipse;
import figuren.Figur;
import figuren.Kochkurve;
import figuren.Kreis;
import figuren.Point;
import figuren.Polynom;
import figuren.Quadrat;
import figuren.Rechteck;

import turtle.Turtle;

public class Painter extends JApplet
{
	private static final long	serialVersionUID	= 1L;
	private Turtle				t;

	public void paint(Graphics g)
	{
		g.setClip(100, 100, 500, 300);
		t = new Turtle(this, 100, 150, 0);
		t.stiftfarbe(Color.GRAY);

		Figur figur;

		figur = new Rechteck(100, 50, new Point(100, 100));
		zeichne(figur); // Zeichne Figur

		figur = new Quadrat(100, new Point(500, 100));
		zeichne(figur); // Zeichne Figur

		figur = new Kochkurve(4, 400);
		zeichne(figur); // Zeichne Figur

		figur = new Ellipse(100, 50, new Point(500, 300));
		zeichne(figur);
		
		figur = new Kreis(130, new Point(200, 450));
		zeichne(figur);
		
		// y = x^2 + 3x + 2
		figur = new Polynom("1 3 2");
		zeichne(figur);
		
		// Ableitung ist 2x + 3, eine gerade
		figur = new Polynom("1 3 2").ableitung();
		zeichne(figur);
		
	}

	void zeichne(Figur f) // Hauptprogramm
	{

		// Marina test kommentar
		// kdmkmdkm
		// dndjndj
		List<Point> aussenLinie = f.zeichnen();

		if (aussenLinie.size() > 0)
		{
			t.stiftHoch();
			t.geheZu(aussenLinie.get(0).getX(), aussenLinie.get(0).getY()); // Auf erste position
			// der figur gehen
			t.stiftRunter();
			t.schreibe(f.getClass().getSimpleName() + ": Zeichnung mit " + f.zeichnen().size()
					+ " Punkten" + " mit Inhalt " + f.inhalt() + " und Umfang " + f.umfang(), aussenLinie.get(0).getX(), aussenLinie.get(0).getY() - 10);
			
			for (int i = 1; i < aussenLinie.size(); i++)
			{
				Point nextPoint = aussenLinie.get(i);
				t.geheZu(nextPoint.getX(), nextPoint.getY());

			}
		}

	} // zeichne

}
